package xaj.xc;

import java.util.Collection;

import abc.aspectj.parse.AbcLexer;
import abc.aspectj.parse.LexerAction_c;

public class AbcExtension extends abc.main.AbcExtension {

	public void initLexerKeywords(AbcLexer lexer) {
		super.initLexerKeywords(lexer);
		// Adiciona a palavra-chave overrides
		lexer.addJavaKeyword("importsyntax", new LexerAction_c(new Integer(
				xaj.xc.parse.sym.IMPORTSYNTAX)));
		
		//Adicionar novas palavras chaves referente a algumas extensões
		//Tokens da classe sintática Await.java
		lexer.addJavaKeyword("await", new LexerAction_c(new Integer(
				xaj.xc.parse.sym.AWAIT)));
		//Tokens da classe sintática Signal.java
		lexer.addJavaKeyword("signal", new LexerAction_c(new Integer(
				xaj.xc.parse.sym.SIGNAL)));
		//Tokens da classe sintática AJSynchroMethod.java
		lexer.addJavaKeyword("synchronize", new LexerAction_c(new Integer(
				xaj.xc.parse.sym.SYNCHRONIZE)));
		//Tokens da classe sintática AJSynchroMethod.java
		lexer.addJavaKeyword("Before", new LexerAction_c(new Integer(
				xaj.xc.parse.sym.AJBEFORE)));
		//Tokens da classe sintática AJSynchroMethod.java
		lexer.addJavaKeyword("After", new LexerAction_c(new Integer(
				xaj.xc.parse.sym.AJAFTER)));
		//Tokens da classe sintática AJSynchroMethod.java
		lexer.addJavaKeyword("with", new LexerAction_c(new Integer(
				xaj.xc.parse.sym.WITH)));
		//Tokens da classe sintática AJSynchro.java
		lexer.addJavaKeyword("synchronizer", new LexerAction_c(new Integer(
				xaj.xc.parse.sym.SYNCHRONIZER)));
	}

	public abc.aspectj.ExtensionInfo makeExtensionInfo(
			Collection<String> jar_classes, Collection<String> aspect_sources) {
		return new ExtensionInfo(jar_classes, aspect_sources);
	}
}
